package com.government.company.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
public class QccCompany {


    @JsonProperty("Status")
    private String status;
    @JsonProperty("Message")
    private String message;
    @JsonProperty("OrderNumber")
    private String orderNumber;
    @JsonProperty("Result")
    private ResultDTO result;

    @NoArgsConstructor
    @Data
    public static class ResultDTO {
        @JsonProperty("VerifyResult")
        private Integer verifyResult;
        @JsonProperty("Data")
        private DataDTO data;

        @NoArgsConstructor
        @Data
        public static class DataDTO {
            @JsonProperty("KeyNo")
            private String keyNo;
            @JsonProperty("Name")
            private String name;
            @JsonProperty("CreditCode")
            private String creditCode;
            @JsonProperty("OperName")
            private String operName;
            @JsonProperty("Status")
            private String status;
            @JsonProperty("StartDate")
            private String startDate;
            @JsonProperty("RegistCapi")
            private String registCapi;
            @JsonProperty("RealCapi")
            private String realCapi;
            @JsonProperty("OrgNo")
            private String orgNo;
            @JsonProperty("No")
            private String no;
            @JsonProperty("TaxNo")
            private String taxNo;
            @JsonProperty("EconKind")
            private String econKind;
            @JsonProperty("TermStart")
            private String termStart;
            @JsonProperty("TermEnd")
            private String termEnd;
            @JsonProperty("TaxpayerType")
            private String taxpayerType;
            @JsonProperty("PersonScope")
            private String personScope;
            /**
             * 参保人数
             */
            @JsonProperty("InsuredCount")
            private String insuredCount;
            @JsonProperty("CheckDate")
            private String checkDate;
            @JsonProperty("AreaCode")
            private String areaCode;
            @JsonProperty("Area")
            private AreaDTO area;
            @JsonProperty("BelongOrg")
            private String belongOrg;
            @JsonProperty("ImExCode")
            private String imExCode;
            @JsonProperty("Industry")
            private IndustryDTO industry;
            @JsonProperty("EnglishName")
            private String englishName;
            @JsonProperty("Address")
            private String address;
            @JsonProperty("AnnualAddress")
            private String annualAddress;
            @JsonProperty("Scope")
            private String scope;
            @JsonProperty("EntType")
            private String entType;
            @JsonProperty("ImageUrl")
            private String imageUrl;
            @JsonProperty("RevokeInfo")
            private Object revokeInfo;
            @JsonProperty("OriginalName")
            private List<OriginalNameDTO> originalName;
            @JsonProperty("StockInfo")
            private StockInfoDTO stockInfo;
            @JsonProperty("ContactInfo")
            private ContactInfoDTO contactInfo;
            @JsonProperty("LongLat")
            private LongLatDTO longLat;
            @JsonProperty("BankInfo")
            private BankInfoDTO bankInfo;
            @JsonProperty("IsSmall")
            private String isSmall;
            @JsonProperty("Scale")
            private String scale;
            @JsonProperty("QccIndustry")
            private QccIndustryDTO qccIndustry;
            @JsonProperty("IsOfficialEnglish")
            private String isOfficialEnglish;

            @NoArgsConstructor
            @Data
            public static class AreaDTO {
                @JsonProperty("Province")
                private String province;
                @JsonProperty("City")
                private String city;
                @JsonProperty("County")
                private String county;
            }

            @NoArgsConstructor
            @Data
            public static class IndustryDTO {
                @JsonProperty("IndustryCode")
                private String industryCode;
                /**
                 * 一级行业
                 */
                @JsonProperty("Industry")
                private String industry;
                @JsonProperty("SubIndustryCode")
                private String subIndustryCode;
                /**
                 * 二级行业
                 */
                @JsonProperty("SubIndustry")
                private String subIndustry;
                @JsonProperty("MiddleCategoryCode")
                private String middleCategoryCode;
                /**
                 * 三级行业
                 */
                @JsonProperty("MiddleCategory")
                private String middleCategory;
                @JsonProperty("SmallCategoryCode")
                private String smallCategoryCode;
                /**
                 * 四级行业
                 */
                @JsonProperty("SmallCategory")
                private String smallCategory;
            }

            @NoArgsConstructor
            @Data
            public static class StockInfoDTO {
                @JsonProperty("StockNumber")
                private String stockNumber;
                @JsonProperty("StockType")
                private String stockType;
            }

            @NoArgsConstructor
            @Data
            public static class ContactInfoDTO {
                @JsonProperty("WebSiteList")
                private List<String> webSiteList;
                @JsonProperty("Email")
                private String email;
                @JsonProperty("MoreEmailList")
                private Object moreEmailList;
                @JsonProperty("Tel")
                private String tel;
                @JsonProperty("MoreTelList")
                private List<MoreTelListDTO> moreTelList;

                @NoArgsConstructor
                @Data
                public static class MoreTelListDTO {
                    @JsonProperty("Tel")
                    private String tel;
                    @JsonProperty("Source")
                    private String source;
                }
            }

            @NoArgsConstructor
            @Data
            public static class LongLatDTO {
                @JsonProperty("Longitude")
                private String longitude;
                @JsonProperty("Latitude")
                private String latitude;
            }

            @NoArgsConstructor
            @Data
            public static class BankInfoDTO {
                @JsonProperty("Bank")
                private String bank;
                @JsonProperty("BankAccount")
                private String bankAccount;
                @JsonProperty("Name")
                private String name;
                @JsonProperty("CreditCode")
                private String creditCode;
                @JsonProperty("Address")
                private String address;
                @JsonProperty("Tel")
                private String tel;
            }

            @NoArgsConstructor
            @Data
            public static class QccIndustryDTO {
                @JsonProperty("AName")
                private String aName;
                @JsonProperty("BName")
                private String bName;
                @JsonProperty("CName")
                private String cName;
                @JsonProperty("DName")
                private String dName;
            }

            @NoArgsConstructor
            @Data
            public static class OriginalNameDTO {
                /**
                 * 曾用名
                 */
                @JsonProperty("Name")
                private String name;
                /**
                 * 变更时间
                 */
                @JsonProperty("ChangeDate")
                private String changeDate;
            }
        }
    }
}
